109C - Lucky Tree - CodeForces Solution


dp dsu trees *1900

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

#define int long long 



int p[200005], sum[200005], n, res;

int find(int x)
{
  if (p[x] != x)
    p[x] = find(p[x]);
  return p[x];
}

void merge(int a,int b)
{
  a = find(a), b = find(b);
  if (a == b)
    return;
  p[a] = b;
  sum[b] += sum[a];
}

bool ck(int x)
{
  while (x)
  {
    if (x % 10 != 7 && x % 10 != 4)
      return false;
    x /= 10;
  }
  return true;
}

int32_t main()
{
  cin >> n;
  for (int i = 1; i <= n; i++)
  {
    p[i] = i;
    sum[i] = 1;
  }
  for (int i = 1; i < n; i++)
  {
    int a, b, c;
    cin >> a >> b >> c;
    if (!ck(c))
      merge(a, b);
  }

  for (int i = 1; i <= n; i++)
  {
    int t = n - sum[find(i)];
    res += t * (t - 1);
  }
  cout << res << endl;
}


Comments

Submit
0 Comments
More Questions

1030B - Vasya and Cornfield
1631A - Min Max Swap
1296B - Food Buying
133A - HQ9+
1650D - Twist the Permutation
1209A - Paint the Numbers
1234A - Equalize Prices Again
1613A - Long Comparison
1624B - Make AP
660B - Seating On Bus
405A - Gravity Flip
499B - Lecture
709A - Juicer
1358C - Celex Update
1466B - Last minute enhancements
450B - Jzzhu and Sequences
1582C - Grandma Capa Knits a Scarf
492A - Vanya and Cubes
217A - Ice Skating
270A - Fancy Fence
181A - Series of Crimes
1638A - Reverse
1654C - Alice and the Cake
369A - Valera and Plates
1626A - Equidistant Letters
977D - Divide by three multiply by two
1654B - Prefix Removals
1654A - Maximum Cake Tastiness
1649A - Game
139A - Petr and Book